From 9107a9f825e949c1e8b5c366073a820e71e308c7 Mon Sep 17 00:00:00 2001 From: Ian Campbell Date: Wed, 4 Aug 2010 16:00:13 +0100 Subject: [PATCH] libxl: free values in XLU_ConfigSetting. Fixes these valgrind reported leaks, found with "valgrind xl create -n ..." ==21170== 8 bytes in 3 blocks are definitely lost in loss record 1 of 3 ==21170== at 0x4022F0A: malloc (vg_replace_malloc.c:236) ==21170== by 0x411B22F: strdup (in /lib/i686/cmov/libc-2.7.so) ==21170== by 0x4030085: xlu__cfgl_strdup (libxlu_cfg.c:290) ==21170== by 0x402F3C4: xlu__cfg_yylex (libxlu_cfg_l.l:37) ==21170== by 0x402DD86: xlu__cfg_yyparse (libxlu_cfg_y.c:1338) ==21170== by 0x40308AE: xlu_cfg_readdata (libxlu_cfg.c:85) ==21170== by 0x804DBE4: parse_config_data (xl_cmdimpl.c:591) ==21170== by 0x8056EE4: create_domain (xl_cmdimpl.c:1381) ==21170== by 0x80582AE: main_create (xl_cmdimpl.c:3178) ==21170== by 0x804B54B: main (xl.c:76) ==21170== ==21170== 57 bytes in 2 blocks are definitely lost in loss record 2 of 3 ==21170== at 0x4022F0A: malloc (vg_replace_malloc.c:236) ==21170== by 0x402FE22: xlu__cfgl_dequote (libxlu_cfg.c:307) ==21170== by 0x402F4B4: xlu__cfg_yylex (libxlu_cfg_l.l:52) ==21170== by 0x402DD86: xlu__cfg_yyparse (libxlu_cfg_y.c:1338) ==21170== by 0x40308AE: xlu_cfg_readdata (libxlu_cfg.c:85) ==21170== by 0x804DBE4: parse_config_data (xl_cmdimpl.c:591) ==21170== by 0x8056EE4: create_domain (xl_cmdimpl.c:1381) ==21170== by 0x80582AE: main_create (xl_cmdimpl.c:3178) ==21170== by 0x804B54B: main (xl.c:76) ==21170== ==21170== 111 bytes in 6 blocks are definitely lost in loss record 3 of 3 ==21170== at 0x4022F0A: malloc (vg_replace_malloc.c:236) ==21170== by 0x402FE22: xlu__cfgl_dequote (libxlu_cfg.c:307) ==21170== by 0x402F4ED: xlu__cfg_yylex (libxlu_cfg_l.l:56) ==21170== by 0x402DD86: xlu__cfg_yyparse (libxlu_cfg_y.c:1338) ==21170== by 0x40308AE: xlu_cfg_readdata (libxlu_cfg.c:85) ==21170== by 0x804DBE4: parse_config_data (xl_cmdimpl.c:591) ==21170== by 0x8056EE4: create_domain (xl_cmdimpl.c:1381) ==21170== by 0x80582AE: main_create (xl_cmdimpl.c:3178) ==21170== by 0x804B54B: main (xl.c:76) Signed-off-by: Ian Campbell Signed-off-by: Stefano Stabellini --- tools/libxl/libxlu_cfg.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tools/libxl/libxlu_cfg.c b/tools/libxl/libxlu_cfg.c index 69a6b24b2d..09a7c71eda 100644 --- a/tools/libxl/libxlu_cfg.c +++ b/tools/libxl/libxlu_cfg.c @@ -91,7 +91,11 @@ int xlu_cfg_readdata(XLU_Config *cfg, const char *data, int length) { } void xlu__cfg_set_free(XLU_ConfigSetting *set) { + int i; + free(set->name); + for (i=0; invalues; i++) + free(set->values[i]); free(set->values); free(set); } -- 2.30.2